package com.chris.libs.example.pages.common.main;

import android.view.View;

import androidx.constraintlayout.widget.ConstraintLayout;
import androidx.navigation.NavController;
import androidx.navigation.Navigation;
import androidx.navigation.ui.NavigationUI;

import com.chris.libs.base.x.mvpp.mvpp.AbsActivityViewProxy;
import com.chris.libs.example.R;
import com.google.android.material.bottomnavigation.BottomNavigationView;

import javax.inject.Inject;

/**
 * @author Chris chan
 * Create on： 2025/2/1 10:02
 * Use for:
 * Explain:
 */
public class MainViewProxy extends AbsActivityViewProxy {

    @Inject
    public MainViewProxy() {
    }

    @Override
    protected void initView() {
        BottomNavigationView navView = this.contentView.findViewById(R.id.nav_view);
        NavController navController = Navigation.findNavController(this.activity, R.id.nav_host_fragment);
        NavigationUI.setupWithNavController(navView, navController);

        /*
        原始代码有个问题：
        因为底部导航初始阶段没有高度，导致展示区域的位置偏移没有达到效果，列表展示有部分会被底部导航覆盖。
        所以需要在底部导航初始化完成之后，获取高度，并动态设定展示区域的底部留空，才能使列表完全展示。
         */
        navView.post(() -> {
            // 获取底部导航的实际高度
            int height = navView.getMeasuredHeight();
            // 获取Fragment展示区域
            View view = contentView.findViewById(R.id.nav_host_fragment);
            // 获取Fragment在弹性布局中的参数
            ConstraintLayout.LayoutParams layoutParams = (ConstraintLayout.LayoutParams) view.getLayoutParams();
            // 修改参数的底部留空
            layoutParams.bottomMargin = height;
            // 重新设置参数
            view.setLayoutParams(layoutParams);
        });
    }
}
